package com.example.demo.util;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

/**
 * 加密解密工具类
 */
public class SecurityUtil {
    /**
     * 加密
     * 通过明文，返回密文
     * @param password
     * @return
     */
    public static String encrypt(String password){
        //生成盐值
        String salt = UUID.randomUUID().toString().replace("-","");
        //进行加密(32位)
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes());
        //盐值+加密后的密文拼接在一起,64位的16进制字符串
        return salt+finalPassword;
    }

    /**
     * 解密（验证密码是否正确）
     * @param password 用户输入的密码
     * @param securityPassword
     * @return
     */
    public static boolean decrypt(String password,String securityPassword){
        if (!StringUtils.hasLength(password) || !StringUtils.hasLength(securityPassword)){
            return false;
        }
        if (securityPassword.length()!=64){
            return false;
        }
        //取出盐值
        String salt = securityPassword.substring(0,32);
        //对盐值和密码进行加密, 得到一个32位
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes());
        return (salt+finalPassword).equals(securityPassword);
    }
}
